<?php

class News extends Controller {
	private $do = 'content';
	private $msg;
	
	function News() {
		parent::Controller ();
		$this->lang->load( 'admin', 'vietnamese' );
		$this->load->helper( 'admin_helper' );
		$this->load->helper( 'link_helper' );
		
		$this->load->model('admin/news_model');
		$this->load->model('admin/cat_model');
		
		check_login();
	}
	
	function index() {
		$menu_cat		= array();	
		$total			= ''; // Tổng số bản ghi
		$page_item 		= 10; // Số bản tin trên 1 trang		
		$cat_id			= (int)$this->uri->segment(5);		
		$page_current	= (int)$this->uri->segment(6);
		$page_type		= (int)$this->uri->segment(4); // Kiểu trang
				
		switch ( $page_type ) {
			case 1:
					$title = 'Dịch vụ :: Danh sách tin';
				break;
				
			case 0:
					$title = 'Tin tức :: Danh sách tin';
				break;
			
			case 4:
					$title = 'Download :: Danh sách file';
				break;
					
			default:
					show_404('page');
				break;
		}
		
		/**
		 * Thay đổi trạng thái và thứ tự
		 */
		if ( isset( $_POST['submit'] ) ) {
			$length = (int)$_POST['length'];
			$this->news_model->update_news_status( $length, $page_type );
			$this->msg[] = 'Thay đổi thông tin thành công';
		}
		
		$items = $this->news_model->list_news( $cat_id, $page_type, $page_item, $page_current, $total );
		
		/**
		 * Form
		 */
		$form_action = admin_link('news/index/'.$page_type.'/'.$cat_id);
		
		/**
    	 * Phân trang
    	 */		
    	$this->load->library('pagination');
    	$config['base_url'] 	= $form_action;
		$config['total_rows'] 	= $total;
		$config['per_page']		= $page_item; 
		$config['cur_page']		= $page_current;
			 
		$this->pagination->initialize( $config );
		
		/**
		 * Chủ dề
		 */
		admin_cat( 0, $page_type, $menu_cat );
		
		$data = array(
			'title'		=> $title,
			'do'		=> $this->do,
			'msg'		=> $this->msg,
			'items'		=> $items,
			'total'		=> $total,	 
			'paging'	=> $this->pagination->create_links(),
			'form'		=> $form_action.'/'.$page_current,
			'p_current'	=> $page_current,
			'cat_id'	=> $cat_id,
			'menu_cat'	=> $menu_cat,
			'page_type'	=> $page_type
		);
				
		$this->load->view ( ADMINPATH . 'admin_header', $data );
		$this->load->view ( ADMINPATH . 'news_list', $data );
		$this->load->view ( ADMINPATH . 'admin_footer', $data );
	}
	
	function add() {
		$menu_cat		= array();
		$page_type		= (int)$this->uri->segment(4); // Kiểu trang

		switch ( $page_type ) {
			case 1:
					$title = 'Dịch vụ :: Thêm dịch vụ mới';
					$using = 0;
				break;
				
			case 0:
					$title = 'Tin tức :: Thêm tin mới';
					$using = 1;
				break;
			
			case 4:
					$title = 'Download :: Thêm download mới';
					$using = 4;
				break;
					
			default:
					show_404('page');
				break;
		}
		
		
		if ( isset( $_POST['submit'] ) ) {
			
			if ( trim ( $_POST['name']) && trim ( $_POST['detail'] ) ) {	
				
				$download = '';
				
				if ( $page_type == 4 ) {
					
					/**
					 * Upload File
					 */
					
					$config['allowed_types']  = MYN_UPLOAD_DOWNLOAD_TYPE;
			
					if ( $_FILES['userfile']['name'] != '' ) {
						$tmp_ext 		= strtolower( substr($_FILES['userfile']['name'], strrpos( $_FILES['userfile']['name'], '.') + 1 ) );
						$allowed_types 	= substr( MYN_UPLOAD_DOWNLOAD_TYPE, strpos(MYN_UPLOAD_DOWNLOAD_TYPE, $tmp_ext), strlen($tmp_ext));
					}
					
					$config = array(
			        	'upload_path'	=> MYN_UPLOAD_DOWNLOAD,
			        	'allowed_types'	=> $allowed_types,	        	
			        	'max_size'		=> MYN_UPLOAD_MAX_FILE
			        );
			        
			        $this->load->library('upload', 	$config);
			        
					if ( ! $this->upload->do_upload())
						$this->msg[] = $this->upload->display_errors();				
					else {					
						$files = $this->upload->data();
						$download = $files['file_name'];
					}
				}
				
				$this->news_model->write_news( $page_type, $download  );
				$this->msg[] = 'Thêm bài viết thành công';				
			}else 
				$this->msg[] = 'Tên bài viết hoặc nội dung chi tiết không được để trống';
		}
		
		$form_action = admin_link('news/add/'.$page_type);
		
		admin_cat( 0, $page_type, $menu_cat );
		
		$data = array(
			'title'		=> $title,
			'do'		=> $this->do,
			'msg'		=> $this->msg,	
			'using'		=> $using,
			'form'		=> $form_action,
			'menu_cat'	=> $menu_cat
		);
				
		$this->load->view ( ADMINPATH . 'admin_header', $data );
		$this->load->view ( ADMINPATH . 'news_add', $data );
		$this->load->view ( ADMINPATH . 'admin_footer', $data );
	}
	
	function edit() {
		$menu_cat	= array();
		$page_type	= (int)$this->uri->segment(4); // Kiểu trang
		$id	= (int)$this->uri->segment(5); // Kiểu trang
		
		switch ( $page_type ) {
			case 1:
					$title = 'Dịch vụ :: Sửa thông tin dịch vụ';
					$using = 0;
				break;
				
			case 0:
					$title = 'Tin tức :: Sửa bài viết';
					$using = 1;
				break;
			
			case 4:
					$title = 'Download :: Sửa thông tin';
					$using = 4;
				break;
					
			default:
					show_404('page');
				break;
		}
		
		if ( isset( $_POST['submit'] ) ) {
			
			if ( trim ( $_POST['name']) && trim ( $_POST['detail'] ) ) {
				
				$download = '';
				
				if ( $page_type == 4 ) {
					
					if ( $_FILES['userfile']['name'] != '' ) {
						/**
						 * Upload File
						 */
						
						$config['allowed_types']  = MYN_UPLOAD_DOWNLOAD_TYPE;
				
						if ( $_FILES['userfile']['name'] != '' ) {
							$tmp_ext 		= strtolower( substr($_FILES['userfile']['name'], strrpos( $_FILES['userfile']['name'], '.') + 1 ) );
							$allowed_types 	= substr( MYN_UPLOAD_DOWNLOAD_TYPE, strpos(MYN_UPLOAD_DOWNLOAD_TYPE, $tmp_ext), strlen($tmp_ext));
						}
						
						$config = array(
				        	'upload_path'	=> MYN_UPLOAD_DOWNLOAD,
				        	'allowed_types'	=> $allowed_types,	        	
				        	'max_size'		=> MYN_UPLOAD_MAX_FILE
				        );
				        
				        $this->load->library('upload', 	$config);
				        
						if ( ! $this->upload->do_upload())
							$this->msg[] = $this->upload->display_errors();				
						else {					
							$files = $this->upload->data();
							$download = $files['file_name'];
							
							/**
							 * Del File
							 */
							$file_old = isset( $_POST['file_old'] ) ? htmlspecialchars( $_POST['file_old'] ) : '';
							@unlink( MYN_UPLOAD_DOWNLOAD.$file_old );
						}
					}
				}
								
				$this->news_model->update_news( $page_type, $download );
				$this->msg[] = 'Thay đổi thành công';				
			}
		}
		$form_action = admin_link( 'news/edit/'.$page_type.'/'.$id );
		$row = $this->news_model->select_news( $id, $page_type );
		
		if ( $row ) {
			
			admin_cat( 0, $page_type, $menu_cat );
			
			$data = array(
				'title'		=> $title,
				'do'		=> $this->do,
				'msg'		=> $this->msg,	
				'using'		=> $using,
				'row'		=> $row,
				'form'		=> $form_action,
				'menu_cat'	=> $menu_cat
			);
					
			$this->load->view ( ADMINPATH . 'admin_header', $data );
			$this->load->view ( ADMINPATH . 'news_edit', $data );
			$this->load->view ( ADMINPATH . 'admin_footer', $data );
			
		}else show_error('Không tồn tại bài viết này');
	}
	
	function del() {
		
		$page_type	= (int)$this->uri->segment(4); // Kiểu trang
		$cat_id		= (int)$this->uri->segment(5); // Cat id
		$page_curr	= (int)$this->uri->segment(6); // Trang hiện tại
		$id			= (int)$this->uri->segment(7); // Id bài viết
		
		$row = $this->news_model->select_news( $id, $page_type );
		if ( $row ) {
			
			$url_back = admin_link('news/index/'.$page_type.'/'.$cat_id.'/'.$page_curr );			
			$this->news_model->del_news( $row['id'], $page_type );
			echo '<meta http-equiv="refresh" content="0;URL='.$url_back.'" />';
			
		}else show_error('Không tồn tại bài viết này');
		
	}
}
